package com.csx.base;

import com.yh.csx.bsf.core.util.PropertyUtils;
import lombok.var;

public class Config {
    public static String ProjectName="tidb-checkdata";
    /**
     * 获取mysql所有表获取扫描的并行度
     * @return
     */
    public static int getMysqlFullTablesParallelCount(){
        return PropertyUtils.getPropertyCache("mysql.fulltables.parallelCount",1);
    }
    /**
     * 获取canal待同步的数据库 支持,分割多个
     * @return
     */
    public static String getCanalDbs(){
        return PropertyUtils.getPropertyCache("canal.dbs", "");
    }

    /**
     * 获取全表同步任务的增量同步追平的延迟间隔 单位:毫秒
     * @return
     */
    public static int getIncrementCheckDataTimeSpan(){
        return PropertyUtils.getPropertyCache("increment.checkData.timeSpan", 60000);
    }

    /**
     * 检查数据更新时间的表间隔
     * @return
     */
    public static int getIncrementCheckDataUpdateTimeTimeSpan(){
        return PropertyUtils.getPropertyCache("increment.checkData.updateTime.timeSpan", 120000);
    }

//    public static boolean getCheckDataTableNowEnabled(){
//        return PropertyUtils.getPropertyCache("increment.checkData.table.now.enabled", false);
//    }

    /**
     * 检查数据中创建时间的检查表-黑名单表
     * @return
     */
    public static String getCheckDataCreateTimeBlackTable(){
        return PropertyUtils.getPropertyCache("increment.checkData.createTime.blackTable","");
    }

    /**
     * 检查数据中创建时间的错误间隔时间
     * @return
     */
    public static int getCheckDataCreateTimeMaxErrorCount(){
        return PropertyUtils.getPropertyCache("increment.checkData.createTime.maxErrorCount",2);
    }

    /**
     * 检查数据的表检查并行度
     * @return
     */
    public static int getCheckDataParallelCount(){
        return PropertyUtils.getPropertyCache("increment.checkData.parallel.count",2);
    }


    /**
     * 创建时间允许差异条数范围
     * @return
     */
    public static int getCheckDataCreateTimeAllowDiffCountSpan(String table){
        var count = PropertyUtils.getPropertyCache("increment.checkData.createTime.allow.diffCountSpan."+table,-1);
        if(count<0){
            count = PropertyUtils.getPropertyCache("increment.checkData.createTime.allow.diffCountSpan.common",20);
        }
        return count;
    }

    /**
     * 检查数据中需要跳过的表
     * 格式:db.table.column
     * @return
     */
    public static String getCheckDataBlackColumns(){
        return ","+PropertyUtils.getPropertyCache("increment.checkData.black.columns","")+",";
    }

    /**
     * 是否开启索引检查
     * @return
     */
    public static Boolean getCheckIndexEnabled(){
        return PropertyUtils.getPropertyCache("increment.checkData.checkIndex.enabled",true);
    }
}
